package com.syy.quartz.job2;

import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
// 创建定时任务
public class MyScheduler {
    public static void main(String[] args) throws SchedulerException {

        // JobDetail 把 Job 进一步包装成 JobDetail
        JobDetail jobDetail = JobBuilder.newJob(MyJob1.class)
                // 必须要指定 JobName 和 groupName，两个合起来是唯一标识符
                .withIdentity("job1", "group1") // 任务名 + 任务组 同一个组中包含许多任务
                // 可以携带 KV 的数据（JobDataMap），用于扩展属性，在运行的时候可以从 context获取到
                .usingJobData("cxf","加油") // 添加额外自定义参数
                .usingJobData("moon",5.21F)
                .build();

        // Trigger
        Trigger trigger = TriggerBuilder.newTrigger()
                .withIdentity("trigger1", "group1") // 定义trigger名 + 组名
                .startNow()
                .withSchedule(SimpleScheduleBuilder.simpleSchedule() // 简单触发器
                        .withIntervalInSeconds(2) // 2秒一次
                        .repeatForever()) // 持续不断执行
                .build();

        // SchedulerFactory
        SchedulerFactory  factory = new StdSchedulerFactory();

        // Scheduler 一定是单例的
        Scheduler scheduler = factory.getScheduler();

        // 绑定关系是1：N ，把 JobDetail 和 Trigger绑定，注册到容器中
        scheduler.scheduleJob(jobDetail, trigger);
        // Scheduler 先启动后启动无所谓，只要有 Trigger 到达触发条件，就会执行任务
        scheduler.start();

    }
}
